home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Technology Seed 1996 September / Macintosh Technology Seed (September 1996) (CDRM1437020).ISO / pc / qd3d15d6 / 15d6_sdk.exe / QD3D Win32 1.5d6 / Interfaces / QD3DTransform.h < prev    next >
C/C++ Source or Header  |  1996-08-21  |  11KB  |  341 lines

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DTransform.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Transform routines                                          **
  7.  **                                                                          **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **     Copyright (C) 1991-1996 Apple Computer, Inc. All rights reserved.     **    
  11.  **                                                                          **
  12.  **                                                                          **
  13.  *****************************************************************************/
  14. #ifndef QD3DTransform_h
  15. #define QD3DTransform_h
  16.  
  17. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  18.     #pragma once
  19. #endif  /*  PRAGMA_ONCE  */
  20.  
  21. #if defined(THINK_C) || defined(__SC__)
  22.     #pragma options(!pack_enums, !align_arrays)
  23.     #pragma SC options align=power
  24. #elif defined(__MWERKS__)
  25.     #pragma enumsalwaysint on
  26.     #pragma align_array_members off
  27.     #pragma options align=native
  28. #elif defined(__PPCC__)
  29.     #pragma options align=power
  30. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  31.     #pragma options enum=int
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif    /* __cplusplus */
  37.  
  38. /******************************************************************************
  39.  **                                                                             **
  40.  **                            Transform Routines                                 **
  41.  **                                                                             **
  42.  *****************************************************************************/
  43.  
  44. QD3D_EXPORT TQ3ObjectType Q3Transform_GetType(
  45.     TQ3TransformObject    transform);
  46.  
  47. QD3D_EXPORT TQ3Matrix4x4 *Q3Transform_GetMatrix(
  48.     TQ3TransformObject    transform,
  49.     TQ3Matrix4x4        *matrix);
  50.  
  51. QD3D_EXPORT TQ3Status Q3Transform_Submit(
  52.     TQ3TransformObject    transform, 
  53.     TQ3ViewObject        view);
  54.  
  55.  
  56. /******************************************************************************
  57.  **                                                                             **
  58.  **                            MatrixTransform Routines                         **
  59.  **                                                                             **
  60.  *****************************************************************************/
  61.  
  62. QD3D_EXPORT TQ3TransformObject Q3MatrixTransform_New(
  63.     const TQ3Matrix4x4     *matrix);
  64.  
  65. QD3D_EXPORT TQ3Status Q3MatrixTransform_Submit(
  66.     const TQ3Matrix4x4     *matrix,
  67.     TQ3ViewObject        view);
  68.  
  69. QD3D_EXPORT TQ3Status Q3MatrixTransform_Set(
  70.     TQ3TransformObject    transform, 
  71.     const TQ3Matrix4x4      *matrix);
  72.  
  73. QD3D_EXPORT TQ3Status Q3MatrixTransform_Get(
  74.     TQ3TransformObject    transform,
  75.     TQ3Matrix4x4        *matrix);
  76.  
  77.  
  78. /******************************************************************************
  79.  **                                                                             **
  80.  **                            RotateTransform Data                             **
  81.  **                                                                             **
  82.  *****************************************************************************/
  83.  
  84. typedef struct TQ3RotateTransformData {
  85.     TQ3Axis        axis;
  86.     float        radians;
  87. } TQ3RotateTransformData;
  88.  
  89.  
  90. /******************************************************************************
  91.  **                                                                             **
  92.  **                            RotateTransform Routines                         **
  93.  **                                                                             **
  94.  *****************************************************************************/
  95.  
  96. QD3D_EXPORT TQ3TransformObject Q3RotateTransform_New(
  97.     const TQ3RotateTransformData    *data);
  98.  
  99.  
  100. QD3D_EXPORT TQ3Status Q3RotateTransform_Submit(
  101.     const TQ3RotateTransformData    *data,
  102.     TQ3ViewObject                    view);
  103.  
  104. QD3D_EXPORT TQ3Status Q3RotateTransform_SetData(
  105.     TQ3TransformObject                transform,
  106.     const TQ3RotateTransformData    *data);
  107.  
  108. QD3D_EXPORT TQ3Status Q3RotateTransform_GetData(
  109.     TQ3TransformObject                transform,
  110.     TQ3RotateTransformData            *data);
  111.     
  112. QD3D_EXPORT TQ3Status Q3RotateTransform_SetAxis(
  113.     TQ3TransformObject                transform,
  114.     TQ3Axis                            axis);
  115.  
  116. QD3D_EXPORT TQ3Status Q3RotateTransform_SetAngle(
  117.     TQ3TransformObject                transform,
  118.     float                            radians);
  119.  
  120. QD3D_EXPORT TQ3Status Q3RotateTransform_GetAxis(
  121.     TQ3TransformObject                 renderable, 
  122.     TQ3Axis                         *axis);
  123.  
  124. QD3D_EXPORT TQ3Status Q3RotateTransform_GetAngle(
  125.     TQ3TransformObject                 transform, 
  126.     float                             *radians);
  127.  
  128.  
  129. /******************************************************************************
  130.  **                                                                             **
  131.  **                    RotateAboutPointTransform Data                             **
  132.  **                                                                             **
  133.  *****************************************************************************/
  134.  
  135. typedef struct TQ3RotateAboutPointTransformData {
  136.     TQ3Axis            axis;
  137.     float            radians;
  138.     TQ3Point3D        about;
  139. } TQ3RotateAboutPointTransformData;
  140.  
  141.  
  142. /******************************************************************************
  143.  **                                                                             **
  144.  **                    RotateAboutPointTransform Routines                         **
  145.  **                                                                             **
  146.  *****************************************************************************/
  147.  
  148. QD3D_EXPORT TQ3TransformObject Q3RotateAboutPointTransform_New(
  149.     const TQ3RotateAboutPointTransformData    *data);
  150.  
  151. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_Submit(
  152.     const TQ3RotateAboutPointTransformData    *data,
  153.     TQ3ViewObject                            view);
  154.  
  155. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_SetData(
  156.     TQ3TransformObject                        transform,
  157.     const TQ3RotateAboutPointTransformData    *data);
  158.  
  159. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_GetData(
  160.     TQ3TransformObject                        transform,
  161.     TQ3RotateAboutPointTransformData        *data);
  162.  
  163. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_SetAxis(
  164.     TQ3TransformObject                        transform,
  165.     TQ3Axis                                    axis);
  166.  
  167. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_GetAxis(
  168.     TQ3TransformObject                        transform,
  169.     TQ3Axis                                    *axis);
  170.  
  171.  
  172. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_SetAngle(
  173.     TQ3TransformObject                        transform,
  174.     float                                    radians);
  175.  
  176. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_GetAngle(
  177.     TQ3TransformObject                        transform,
  178.     float                                    *radians);
  179.  
  180.  
  181. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_SetAboutPoint(
  182.     TQ3TransformObject                        transform,
  183.     const TQ3Point3D                        *about);
  184.  
  185. QD3D_EXPORT TQ3Status Q3RotateAboutPointTransform_GetAboutPoint(
  186.     TQ3TransformObject                        transform,
  187.     TQ3Point3D                                *about);
  188.  
  189.  
  190. /******************************************************************************
  191.  **                                                                             **
  192.  **                    RotateAboutAxisTransform Data                             **
  193.  **                                                                             **
  194.  *****************************************************************************/
  195.  
  196. typedef struct TQ3RotateAboutAxisTransformData {
  197.     TQ3Point3D            origin;
  198.     TQ3Vector3D            orientation;
  199.     float                radians;
  200. } TQ3RotateAboutAxisTransformData;
  201.  
  202.  
  203. /******************************************************************************
  204.  **                                                                             **
  205.  **                    RotateAboutAxisTransform Routines                         **
  206.  **                                                                             **
  207.  *****************************************************************************/
  208.  
  209. QD3D_EXPORT TQ3TransformObject Q3RotateAboutAxisTransform_New(
  210.     const TQ3RotateAboutAxisTransformData    *data);
  211.  
  212. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_Submit(
  213.     const TQ3RotateAboutAxisTransformData    *data,
  214.     TQ3ViewObject                            view);
  215.  
  216. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_SetData(
  217.     TQ3TransformObject                        transform,
  218.     const TQ3RotateAboutAxisTransformData    *data);
  219.  
  220. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_GetData(
  221.     TQ3TransformObject                        transform,
  222.     TQ3RotateAboutAxisTransformData            *data);
  223.  
  224.  
  225. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_SetOrientation(
  226.     TQ3TransformObject                        transform,
  227.     const TQ3Vector3D                        *axis);
  228.  
  229. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_GetOrientation(
  230.     TQ3TransformObject                        transform,
  231.     TQ3Vector3D                                *axis);
  232.  
  233.  
  234. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_SetAngle(
  235.     TQ3TransformObject                        transform,
  236.     float                                    radians);
  237.  
  238. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_GetAngle(
  239.     TQ3TransformObject                        transform,
  240.     float                                    *radians);
  241.  
  242.  
  243. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_SetOrigin(
  244.     TQ3TransformObject                        transform,
  245.     const TQ3Point3D                            *origin);
  246.  
  247. QD3D_EXPORT TQ3Status Q3RotateAboutAxisTransform_GetOrigin(
  248.     TQ3TransformObject                        transform,
  249.     TQ3Point3D                                *origin);
  250.  
  251.  
  252. /******************************************************************************
  253.  **                                                                             **
  254.  **                            ScaleTransform Routines                             **
  255.  **                                                                             **
  256.  *****************************************************************************/
  257.  
  258. QD3D_EXPORT TQ3TransformObject Q3ScaleTransform_New(
  259.     const TQ3Vector3D        *scale);
  260.  
  261. QD3D_EXPORT TQ3Status Q3ScaleTransform_Submit(
  262.     const TQ3Vector3D        *scale,
  263.     TQ3ViewObject            view);
  264.         
  265. QD3D_EXPORT TQ3Status Q3ScaleTransform_Set(
  266.     TQ3TransformObject        transform,
  267.     const TQ3Vector3D        *scale);
  268.  
  269. QD3D_EXPORT TQ3Status Q3ScaleTransform_Get(
  270.     TQ3TransformObject        transform,
  271.     TQ3Vector3D                *scale);
  272.  
  273.  
  274. /******************************************************************************
  275.  **                                                                             **
  276.  **                            TranslateTransform Routines                         **
  277.  **                                                                             **
  278.  *****************************************************************************/
  279.  
  280. QD3D_EXPORT TQ3TransformObject Q3TranslateTransform_New(
  281.     const TQ3Vector3D        *translate);
  282.  
  283. QD3D_EXPORT TQ3Status Q3TranslateTransform_Submit(
  284.     const TQ3Vector3D        *translate,
  285.     TQ3ViewObject            view);
  286.  
  287. QD3D_EXPORT TQ3Status Q3TranslateTransform_Set(
  288.     TQ3TransformObject        transform,
  289.     const TQ3Vector3D        *translate);
  290.  
  291. QD3D_EXPORT TQ3Status Q3TranslateTransform_Get(
  292.     TQ3TransformObject        transform,
  293.     TQ3Vector3D                *translate);
  294.  
  295.  
  296. /******************************************************************************
  297.  **                                                                             **
  298.  **                            QuaternionTransform Routines                     **
  299.  **                                                                             **
  300.  *****************************************************************************/
  301.  
  302. QD3D_EXPORT TQ3TransformObject Q3QuaternionTransform_New(
  303.     const TQ3Quaternion        *quaternion);
  304.  
  305. QD3D_EXPORT TQ3Status Q3QuaternionTransform_Submit(
  306.     const TQ3Quaternion        *quaternion,
  307.     TQ3ViewObject            view);
  308.  
  309. QD3D_EXPORT TQ3Status Q3QuaternionTransform_Set(
  310.     TQ3TransformObject        transform, 
  311.     const TQ3Quaternion     *quaternion);
  312.  
  313. QD3D_EXPORT TQ3Status Q3QuaternionTransform_Get(
  314.     TQ3TransformObject        transform,
  315.     TQ3Quaternion            *quaternion);
  316.  
  317.  
  318. /******************************************************************************
  319.  **                                                                             **
  320.  **                            ResetTransform Routines                             **
  321.  **                                                                             **
  322.  *****************************************************************************/
  323.  
  324. QD3D_EXPORT TQ3TransformObject Q3ResetTransform_New(
  325.     void);
  326.  
  327. QD3D_EXPORT TQ3Status Q3ResetTransform_Submit(
  328.     TQ3ViewObject            view);
  329.  
  330. #ifdef __cplusplus
  331. }
  332. #endif    /* __cplusplus */
  333.  
  334. #if defined(__MWERKS__)
  335.     #pragma enumsalwaysint reset
  336. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  337.     #pragma options enum=reset
  338. #endif
  339.  
  340. #endif  /*  QD3DTransform_h  */
  341.